import pygame

class StatusEffects():
    
    # How long until the effect is removed. Default is permanent.
    time_left = float('Inf')
    
    # 
    callback = None
    
    #
    # Values: apply, expire, update
    type = None
    
    # The object which should be modified
    target = None
    
    # The data should have this value added.
    value = 0
    
    # The data should be multiplied by this value.
    modifier = 1
    
    def __init__(self, target):
        '''
        Constructor
        '''
        self.target
    
    def update(self, dtime):
        '''
        Called on each game tick.
        '''
        self.time_left -= dtime
        
        if self.type == 'update':
            pass
        
        if self.time_left <= 0.0:
            pass

    def on_apply(self):
        pass
    
    def on_update(self):
        pass
    
    def on_expire(self):
        pass
    
    def modify_player_energy(self):
        self.target.energy = self.target.energy * self.modifier + self.value
    
    def modify_player_mass(self):
        self.target.mass = self.target.mass * self.modifer + self.value